void RegulatorK(void) _task_ REGK _priority_ 1
{
 signed char RtxCompletion;
 unsigned int Message,Msg_h2o,Msg_reg;
 p->KA=(p->Kp*(1.0+p->dT*(0.01)/(2.0*p->Ti)));								//Konstanta KA prirastkoveho regulatora
 p->KB=(p->Kp*(1.0-p->dT*(0.01)/(2.0*p->Ti)));								//Konstanta KB prirastkoveho regulatora
 p->KC=(p->Kp*(p->Td/(p->dT*(0.01))));				     					//Konstanta KC prirastkoveho regulatora 
 while(1)
  {
	 switch(RtxCompletion=os_wait(K_TMO+K_SIG+K_MBX+REGK,p->dT,&Message))
	  {
		 case	TMO_EVENT	:	RtxCompletion=os_send_message(MEASURE,REGK,EndWait);
											RtxCompletion=os_send_message(MEASURE,EXH2OIN,EndWait);
											LED2=1;
											break;
		 case	MSG_EVENT	: switch(Message & h2oin)
											 {
												case	h2oin	:	Msg_h2o=Message & mask;	break;
												default			:	Msg_reg=Message; break;												
											 }
		 case	SIG_EVENT	:	p->E0=(int)Msg_reg-(int)Msg_h2o;		//???
											p->deltaT=(p->Tkomfort-p->Tutlm);
											if(Msg_reg>=p->Tmax) {p->Y0=p->Y1; p->E0=p->E1=p->E2=0;}										//Obmedzenie na teplotu Tmin..Tmax
											p->Y0=p->Y1+p->KA*p->E0-p->KB*p->E1+p->KC*p->E2;											//Vypocet trva cca. 1300us
											if((int)p->Y0<=(p->Servo_Min*K)) p->Y0=p->Servo_Min*K;
											if((int)p->Y0>=(p->Servo_Max*K)) p->Y0=p->Servo_Max*K;
											p->SetPosition=(int)p->Y0;
											p->E2=p->E1;
											p->E1=p->E0;
											p->Y1=p->Y0;
											LED2=0;
											break;
		}
	}
}